/** @file Penguin.h
    @class Penguin
    @brief Class representing a penguin

    The penguin is a simple GameObject, using a penguin mesh and textures that comes with Ogre3D. The penguin also have a sound.
*/
#ifndef __Penguin_h_
#define __Penguin_h_

#include "stdafx.h"
#include "GameObject.h"
#include "Sound3d.h"

class Penguin : public GameObject {
public:
	/**
	*	@brief Constructor
	*	@param position	Defines the position of the Penguin in worldspace. The center of the penguin will be placed on this point.
	*/
	Penguin(Ogre::Vector3 position);

	/**
	*	@brief Destructor
	*/
	~Penguin();
	
	/**
	*	@brief Logic updates that needs to be handeled every game loop. The penguin's sound is updated here.
	*/
	void updateLogic();
	
	/**
	*	@brief	Must be called prior to placing the object in a scene. Creates the penguin Entity, scales it and attaches it to the scene node.
	*	@param sceneMgr		The Ogre::SceneManager that manages the scene where the penguin should be placed.
	*	@param id			A unique id, not shared with any other movable object in the scene.
	*/
	virtual void createMovableObject(Ogre::SceneManager* sceneMgr, unsigned int id);

	/**
	*	@brief Triggered when adding a  gameobject to a model. Sets and starts the peguin sound.
	*/
	virtual void addedToModel();
private:
	/**
	*	@brief The sound that is played by the penguin.
	*/
	Sound3d* m_sound;
};

#endif //__Penguin_h_